var models = require('../db');
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var $sql = require('../sqlMap');
var jwt = require('jsonwebtoken'); // 用于生成 token
// var bcrypt = require('bcrypt'); // 暂时不使用 bcrypt 加密

// 连接数据库
var conn = mysql.createConnection(models.mysql);
conn.connect();

// 登录请求处理
router.post('/login', (req, res) => {
    var sql = $sql.userdata.queryByUsername;
    var params = req.body;
    const { username, password } = params;

    // 查询数据库，验证用户是否存在
    conn.query(sql, [username], function (err, result) {
        if (err) {
            console.log(err);
            return res.status(500).json({ message: '服务器错误' });
        }

        if (result.length === 0) {
            return res.status(400).json({ message: '用户不存在' });
        }

        const user = result[0];

        // 直接比对明文密码
        if (password !== user.password) {
            return res.status(400).json({ message: '密码错误' });
        }

        // 如果验证通过，生成 JWT token
        const token = jwt.sign(
            { userId: user.id, username: user.username, role: user.role }, // 你可以自定义需要存储的token信息
            'your_secret_key', // 替换为你自己的密钥
            { expiresIn: '1h' } // 设置 token 有效期
        );

        // 返回token给前端
        res.json({ token });
    });
});

module.exports = router;

//这是登录逻辑的后端，现在只简单采用明文密码。从安全性角度来说可能对密码进行加密操作会更好，但是现在先不考虑吧
//主要是现在的用户信息都是直接添加到数据库的，如果要实现加密操作的话这些明文用户信息是不能用的